# -*- coding:utf-8 -*-
# @Time :2025/3/10
"""
步骤：
# 0. 导包
# 1. 创建日志器对象
# 2. 设置日志打印级别
    # logging.DEBUG 调试级别
    # logging.INFO 信息级别
    # logging.WARNING 警告级别
    # logging.ERROR 错误级别
    # logging.CRITICAL 严重错误级别
# 3. 创建处理器对象
    # 创建 输出到控制台 处理器对象
    # 创建 输出到日志文件 处理器对象
# 4. 创建日志信息格式
# 5. 将日志信息格式设置给处理器
    # 设置给 控制台处理器
    # 设置给 日志文件处理器
# 6. 给日志器添加处理器
    # 给日志对象 添加 控制台处理器
    # 给日志对象 添加 日志文件处理器
# 7. 打印日志
"""
import logging
from logging.handlers import TimedRotatingFileHandler

from config import BASE_DIR


def init_log_conf(filename, when='midnight', interval=1, backup_count=7):
    try:
        # 1. 创建日志器对象
        logger = logging.getLogger()

        # 2. 设置日志打印级别
        logger.setLevel(logging.INFO)

        # 3.1 创建 输出到控制台 处理器对象
        st = logging.StreamHandler()

        # 3.2 创建 输出到日志文件 处理器对象
        fh = TimedRotatingFileHandler(filename=filename, when=when, interval=interval,
                                      backupCount=backup_count,encoding='utf-8')

        # 4. 创建日志信息格式
        fmt = "%(asctime)s %(levelname)s [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s"
        formatter = logging.Formatter(fmt)

        # 5.1 日志信息格式 设置给 控制台处理器
        st.setFormatter(formatter)
        # 5.2 日志信息格式 设置给 日志文件处理器
        fh.setFormatter(formatter)

        # 6.1 给日志器对象 添加 控制台处理器
        logger.addHandler(st)
        # 6.2 给日志器对象 添加 日志文件处理器
        logger.addHandler(fh)

        return logger
    except Exception as e:
        print(f"日志配置初始化失败: {e}")
        return None

if __name__ == '__main__':
    # 初始化日志
    init_log_conf(BASE_DIR +'/logs/login.log',interval=3,backup_count=5)
    # 打印日志
    logging.debug("debug")
    logging.info("info")
    logging.warning("warning")
    logging.error("error")
    logging.critical("critical")
